package com.gexin.model.template;

import com.gexin.common.utils.SQLUtils;
import com.gexin.model.template.base.BaseTemplateArea;
import com.jfinal.plugin.activerecord.Db;

import java.math.BigDecimal;

/**
 * 业务名称:  t_template_area(这是   物流模版  每个商铺所有地址对应的表) 
 */
@SuppressWarnings("serial")
public class TemplateArea extends BaseTemplateArea<TemplateArea> {
	public static final TemplateArea dao = new TemplateArea();
	//静态变量
	public static  final String TEMPLATE_ONE_ID="template_one_id";
	public static  final String TEMPLATE_TWO_ID="template_two_id";
	public static  final String TEMPLATE_THREE_ID="template_three_id";
	public static  final String TEMPLATE_FOUR_ID="template_four_id";
	public static  final String TEMPLATE_FIVE_ID="template_five_id";


	//



	/**
	 * 根据  areaid  和template_id ,还有template_column 来改变状态和价格
	 */
	public void changeDataByAreaIdAndTemplateId(String area_id,int template_id,String template_column,BigDecimal fee){
		String sql=" update t_template_area set state=1 ,fee=? where area_id=?  and "+template_column+" =?";
		Db.update(sql,fee,area_id,template_id);
	}

	/**
	 * 根据  areaid  和template_id ,还有template_column 来改变状态和价格
	 */
	public void  changeDataByAreaIdAndTemplateId(String area_id,int template_id,int item_id){
		String sql=" update t_template_area set state=1 ,item_id=? where area_id="+area_id+"  and template_id =?";
		Db.update(sql,item_id,template_id);
	}


	/**
	 * fang  2016-07-06
	 * 根据shop_id 来寻找哪一个column_name  可以用
	 *
	 */
	/*public String getColumnNameByShopId(String shop_id){
		String sql=" select * from t_template_area where shop_id=?     ";
		String result="";
		TemplateArea templateArea=TemplateArea.dao.findFirst(sql,shop_id);
		if(templateArea.getTemplateOneId()==null){
			result=  TEMPLATE_ONE_ID;
		}
		else if(templateArea.getTemplateTwoId()==null){
			result=TEMPLATE_TWO_ID;
		}
		else if(templateArea.getTemplateThreeId()==null){
			result=TEMPLATE_THREE_ID;
		}
		else if(templateArea.getTemplateFourId()==null){
			result=TEMPLATE_FOUR_ID;
		}
		else if(templateArea.getTemplateFiveId()==null){
			result=TEMPLATE_FIVE_ID;
		}
		return  result;
	}*/

	/**
	 *
	 * 初始化
	 * 给所有的colum 对应的赋值
	 *
	 */
	public void initTemplateId(String shop_id,String column,int template_id){
		String sql="  update  t_template_area set "+column+"= ?  where shop_id=?";
		Db.update(sql,template_id,shop_id);
	}


	/**
	 *
	 * 初始化
	 * 给所有的colum 对应的赋值
	 *
	 */
	public void initTemplateId(String shop_id,int template_id){
		String sql="  update  t_template_area set template_id= ?  where shop_id=? and template_id=null";
		Db.update(sql,template_id,shop_id);
	}


	/**
	 * 微信端专用接口
	 * fang  2016-07-07
	 * 就是订单的时候会检测卖不卖
	 */

	public TemplateArea getProductTemplateArea(String template_column, int template_id, int area_id){
		SQLUtils sql =new SQLUtils(" select state,fee from t_template_area  where 1=1        ");
		sql.whereEquals(FIELD_AREA_ID, area_id);
		sql.whereEquals(template_column, template_id);
		return dao.findFirst(sql.toString());
	}

	/**
	 * 微信端专用接口
	 * fang  2016-07-07
	 * 就是订单的时候会检测卖不卖
	 */

	public TemplateArea getProductTemplateArea(int template_id, String area_id){
		SQLUtils sql =new SQLUtils(" select a.state,a.area_id,a.item_id,i.first_num,i.fee,i.continue_num,i.continue_fee  from t_template_area a left join t_template_wuliu_item i on i.id=a.item_id  where 1=1        ");
		sql.whereEquals(FIELD_AREA_ID, area_id);
		sql.whereEquals("a.template_id", template_id);
		return dao.findFirst(sql.toString());
	}


	/**
	 * 删除模版的时候要删除对应的面积
	 * fang  2016-07-07
	 *
	 */
	public void deleteAreaByTemplateId(int template_id){
		String sql=" delete from t_template_area where template_id=?";
		/*if(Db.update(sql,template_id)!=0){
			return true;
		}else{
			return false;
		}*/
		Db.update(sql,template_id);
	}

	/**
	 * 删除模版的时候删除商品的属性
	 * fang  2016-07-07
	 */
	public void deleteProductTemplateIdByTemplateId(int template_id){
		String sql=" update t_product set template_id=null where template_id =?";
		/*if(Db.update(sql,template_id)!=0){
			return true;
		}else{
			return false;
		}*/
		Db.update(sql,template_id);
	}


	/**
	 * fang  2016-07-07
	 * 编辑的时候,先根据  template_id  将所有的
	 * state  变为2    item_id=null
	 *
	 */
	public void updateAreaStateById(int template_id){
		String sql="  update t_template_area set state=2 , item_id=null  where  template_id=?    ";
		Db.update(sql,template_id);
	}




	/**
	 * 微信端用的    先看卖不卖
	 * 检测这个区域卖不卖的问题
	 */
	public Boolean getAreaState(int template_id,String area_id){
		Boolean state=false;
		TemplateArea templateArea=getProductTemplateArea(template_id,  area_id);
		if(templateArea!=null){
			if(templateArea.getState()==1){
				state=true;
			}
			else if(templateArea.getState()==2){
				state=false;
			}
		}
		return state;
	}


	/**
	 *   算法    计算运费
	 * 微信端用的   检测区域要卖的话
	 * 返回对象  ,订单检测的时候,逐步请求
	 * 参数  template_id  areea_id
	 * 还要传数量
	 */
	public BigDecimal trans_fee(int pro_num, int template_id, String area_id){
		BigDecimal sum_fee=new BigDecimal(0.00);
		TemplateArea templateArea=getProductTemplateArea(template_id,  area_id);
		TemplateWuliuItem item= TemplateWuliuItem.dao.findById(templateArea.getItemId());
		if(pro_num<=item.getFirstNum()){
			sum_fee=item.getFee();
		}
		//进入续件
		else{
			//检验除数不为0
			if(item.getContinueNum()==0){
				//System.err.println("续费件数为0");
				sum_fee=item.getFee();
			}
			else{  //相乘
				int a=item.getContinueNum();
				int b=pro_num-item.getFirstNum();
				int chengfa_num=(int)Math.ceil((double)b/(double)a);
				sum_fee=item.getFee().add((new BigDecimal(chengfa_num)).multiply(item.getContinueFee()));
			}
		}
		return sum_fee;
	}

}
